home *** CD-ROM | disk | FTP | other *** search
/ Dr. Windows 3 / dr win3.zip / dr win3 / PROGRAMR / JORF21_2.ZIP / CONTACT.J < prev    next >
Text File  |  1993-07-05  |  25KB  |  801 lines

  1. Class:Contact
  2.   Index:FullName
  3.   Index:Company
  4.   Index:WorkPhone
  5.   Index:LastName
  6.   Index:ZipCode
  7.   Addr1
  8.   Addr2
  9.   Addr3
  10.   HomePhone
  11.   FaxPhone
  12.   StartDate
  13.   LastUpDate
  14.   MailCode
  15.   CustCode
  16.   Location
  17.   Dear
  18.   PhoneNote
  19.   Comment
  20.   Type          | Customer, Vendor
  21.   Notes         | Memo Notes
  22.   Sales         | Sales to date
  23.  
  24. Contact:Start()
  25.   | JORF Contact Management Data Base
  26.   New (Contact:Contact)
  27.  
  28.   | Other source files
  29.   Jorf:File("TextEdit.J",Here)            | Text Editor
  30.   Jorf:File("Filter.J",Here)              | Filters
  31.   Jorf:File("ConHelp.J",Here)             | Help
  32.   Jorf:File("ConFlds.J",Here)            | Fields
  33.  
  34.   | Initialization . . .
  35.   Mem:Ptr->ContactFile   = "CONTACT.JCM"  | Default Contact File
  36.   Mem:Ptr->ContactFName  = "CONTACT"      | Name to display
  37.   Mem:Ptr->ContactFilter = Null           | All Records
  38.   Mem:Ptr->FilterDescr   = "All Records"  | All Records
  39.   Mem:Ptr->TopLevel      = Here           | Top Level
  40.   Mem:Ptr->PageNo        = 0              | Starting Page No
  41.  
  42.   | System Parameters.
  43.   Event:Add ("Contact","Key",Here)              | Set Contact handler
  44.   Contact:KeySearch(Contact,"FullName",False)   | Go to top of file
  45.  
  46.   | Contact Manager Main Window
  47.   |  The purpose of this window is to provide basic information on
  48.   |  the contact, as well as show a browser of nearby contacts.  When
  49.   |  you add, change or view, you can see additional information for
  50.   |  this contact.  The Additional screens are unlimited.
  51.   |
  52.   |  The Main Window also acts as the Main Menu.  All functions are
  53.   |  menu options from this screen.  When the operator hits escape
  54.   |  (or Alt-X) we are done with the program.
  55.   Win:Add ("Josephine's Contact Manager", 2, 2, 22, 78, Here)
  56.     Before:"Contact:Page(1)"
  57.     Menu:"&File"
  58.       Menu:"&Open           F4", Action:"Contact:OpenFile()", Hotkey:"F4_Key"
  59.       Menu:"&Filter         F7", Action:"Contact:Filter()",   Hotkey:"F7_Key"
  60.       Menu:"F&ield Editor     ", Action:"Contact:SetFields()"
  61.       Menu:"&Text Editor    F9", Action:"Textedit:Start()" HotKey:"F9_Key"
  62.       Menu:"&Rebuild        ",   Action:"Contact:Rebuild()"
  63.       Menu:
  64.       Menu:"&Dos Shell      F5", Action:"Jorf:System(Null,'C')", Hotkey:"F5_Key"
  65.       Menu:"Ca&lculator     F8", Action:"Calc:Start()",  Hotkey:"F8_Key"
  66.       Menu:
  67.       Menu:"&Set Mailcode   ",   Action:"Contact:SetMailCode(Contact)"
  68.       Menu:"&Clear Mailcode ",   Action:"Contact:ClearMailCode(Contact)"
  69.       Menu:
  70.       Menu:"&About            "  Action:"Contact:About"
  71.       Menu:"Cou&nt Records    ", Action:"Contact:Count"
  72.       Menu:"&Help           F1", Action:"Contact:Help" Hotkey:"F1_Key"
  73.       Menu:
  74.       Menu:"E&xit        Alt-X", Action:"Kbd:Put('Esc_Key')"
  75.     Menu:"&Edit"
  76.       Menu:"&Add     Alt-A",  Action:"Contact:Add(Contact)"    HotKey:"Alt_A_Key"
  77.       Menu:"&Change  Alt-C",  Action:"Contact:Change(Contact)" HotKey:"Alt_C_Key"
  78.       Menu:"&Delete  Alt-D",  Action:"Contact:Delete(Contact)" HotKey:"Alt_D_Key"
  79.       Menu:"&Hundreds     ",  Action:"Contact:Hundreds(Contact)"
  80.     Menu:"&Search",
  81.       Menu:"&Name       ",  Action:"Contact:KeySearch (Contact, 'FullName' ,True)
  82.       Menu:"&Company    ",  Action:"Contact:KeySearch (Contact, 'Company'  ,True)
  83.       Menu:"&Last Name  ",  Action:"Contact:KeySearch (Contact, 'LastName' ,True)
  84.       Menu:"&Phone      ",  Action:"Contact:KeySearch (Contact, 'WorkPhone',True)
  85.       Menu:"&Zip        ",  Action:"Contact:KeySearch (Contact, 'ZipCode'  ,True)
  86.     Menu:"&Reports"
  87.       Menu:"&Contact Data",       Action:"Contact:PrintData"
  88.       Menu:"&List of Contacts",   Action:"Contact:List"
  89.       Menu:"&Merge Letter",       Action:"Contact:MergeLetter"
  90.       Menu:"L&abels",
  91.         Menu:"&Avery 5162 - Laser Labels", Action:"Contact:Avery5162(Contact,'All')"
  92.         Menu:"&Continuous - 1x3½ Inch   ", Action:"Contact:ContinLabels(Contact,'All')"
  93.       Menu:"&One Label",
  94.         Menu:"&Avery 5162 - Laser Labels", Action:"Contact:Avery5162(Contact,'One')"
  95.         Menu:"&Continuous - 1x3½ Inch   ", Action:"Contact:ContinLabels(Contact,'One')"
  96.     InpBefore:"Contact:Lock(Contact)"
  97.     Input:"File:"   Row:22 Col:1  Wid:8  Field:"Mem:Ptr->ContactFName" Before:"False"
  98.     Input:"Index:"  Row:22 Col:18 Wid:10 Field:"Mem:Ptr->IndexName"    Before:"False"
  99.     Input:"Filter:" Row:22 Col:40 Wid:30 Field:"Mem:Ptr->FilterDescr"  Before:"False"
  100.     Group:"&Browse List", Row:1 Col:41, Len:6, Wid:36
  101.     List:""
  102.       Field:"Contact"
  103.       Next:"Contact:NextRecord(Contact,'Next')"
  104.       Prev:"Contact:NextRecord(Contact,'Prev')"
  105.       Show:"Contact:Show(Contact)"
  106.       Before:"Contact:Write()"
  107.       Display:"(Mem:Ptr->Locked==Null)"
  108.       Action:"Contact:Change(Contact)"
  109.     Group:"C&ontact", Row:1, Col:1, Wid:38, Len:6
  110.     Input:"Contact", Wid:30, Field:"Contact->FullName"
  111.       After:"Contact:SplitName(Contact)"
  112.     Input:"Company", Wid:30, Field:"Contact->Company"
  113.     Input:"Address", Wid:30, Field:"Contact->Addr1"
  114.     Input:"       ", Wid:30, Field:"Contact->Addr2"
  115.     Input:"       ", Wid:30, Field:"Contact->Addr3"
  116.       After:"Contact:ZipCode(Contact)"
  117.     Radio:"USA"  Row:7 Col:2
  118.       Action:"Contact->Location='USA'"
  119.       UnAction:"Contact->Location=Null"
  120.       Check:"Contact->Location=='USA'"
  121.     Radio:"Canada/Mexico" Row:7 Col:11
  122.       Action:"Contact->Location='CanMex'"
  123.       UnAction:"Contact->Location=Null"
  124.       Check:"Contact->Location=='CanMex'"
  125.     Radio:"Foreign" Row:7 Col:30
  126.       Action:"Contact->Location='Foreign'"
  127.       UnAction:"Contact->Location=Null"
  128.       Check:"Contact->Location=='Foreign'"
  129.     Marker:"Box"
  130.     Marker:"Fields"
  131.       | Fields will go here
  132.     Marker:"EndFields"
  133.   If (Kbd:Got='Esc_Key')
  134.     Return (Null)
  135.   Return (Contact)
  136.  
  137. Contact:About
  138.   Msg:Add ("The JORF Contact Manager", "Ok")
  139.     The JORF Contact Manager
  140.     Version 1.3,  March 20, 1993
  141.  
  142.     Copyright (C) 1993 by Wayland Bruns
  143.     All Rights Reserved
  144.  
  145.     The JORF Contact Manager is written as
  146.     a demonstration of what you can do with
  147.     the JORF Language.  The contact manager
  148.     is a "flat file" data base with multiple
  149.     keys, multiple files, filters, mail-
  150.     merge capability, reports and labels.
  151.  
  152.     The source code for this entire system
  153.     is less than 1000 lines, and you can
  154.     easily change it to suit your own
  155.     contact management needs.
  156.   Return (Ok)
  157.  
  158. Contact:Add(*Contact)
  159.   New (Contact:NewContact)
  160.   Contact:SetFile()
  161.   NewContact->FullName="New Record"
  162.   Jorf:Write(NewContact)
  163.   Contact=NewContact
  164.   Win:Dsp
  165.   Kbd:Put("Alt_O_Key")
  166.   Return(Ok)
  167.  
  168. Contact:Alt_F5_Key
  169.   Win:Msg('Flushing')
  170.   Jorf:Flush
  171.   Win:Msg()
  172.   Return (Ok)
  173.  
  174. Contact:Alt_Page_Down_Key
  175.   If (ConFlds:IsPage(Mem:Ptr->PageNo+1))
  176.     Contact:Page(Mem:Ptr->PageNo+1)
  177.   Else
  178.     Contact:Page(1)
  179.   Return (Ok)
  180.  
  181. Contact:Alt_Page_Up_Key
  182.   New (PageNo)
  183.   If (Mem:Ptr->PageNo>1)
  184.     Contact:Page(1)
  185.   Else
  186.     Contact:Page(ConFlds:LastPage())
  187.   Return (Ok)
  188.  
  189. Contact:Alt_X_Key
  190.   Return (Contact:Exit)
  191.  
  192. Contact:Avery5162(Contact,Flag)
  193.   New (Dest,Count,StartPos,OrigContact)
  194.   Dest=Jorf:Printer()
  195.   If (Dest)
  196.  
  197.     Event:Add
  198.     StartPos=1
  199.     Mem:Ptr->InsMode='OverStrike'
  200.     Win:Add ("Starting Position")
  201.       Type:"Message"
  202.       String:"This format prints on the right row of the"
  203.       String:"Avery 5162 label.  To conserve paper, you"
  204.       String:"may enter the label to start with.  The top"
  205.       String:"label is #1, and the bottom is #7."
  206.       String:""
  207.       Input:"Label to start        ", Wid:5, Field:"StartPos"
  208.       String:""
  209.       String:"When each sheet is printed, turn it around"
  210.       String:"to print on the other side."
  211.     Win:Del
  212.     Mem:Ptr->InsMode='Insert"
  213.     If (Kbd:Got = 'Esc_Key')
  214.       Return (Ok)
  215.  
  216.     Contact:SetFile()
  217.     OrigContact = Contact
  218.     | Report format for Continuous labels, 6 lines per label
  219.     |
  220.     Rep:Add ("Avery Labels", 9, 5, 49, 45, Here)
  221.       Next:"Contact:NextLabel(Contact,Flag,Count)"
  222.         Before:"Contact:Avery5162check(Contact,OrigContact,StartPos,Count)"
  223.       Item:"" NewRo